import Cookies from "js-cookie";
import { updateCheckedZone } from '@/api/login'

const app = {
  state: {
    sidebar: {
      opened: !+Cookies.get("sidebarStatus"),
      withoutAnimation: false
    },
    device: "desktop"
  },
  mutations: {
    TOGGLE_SIDEBAR: state => {
      if (state.sidebar.opened) {
        Cookies.set("sidebarStatus", 1);
      } else {
        Cookies.set("sidebarStatus", 0);
      }
      state.sidebar.opened = !state.sidebar.opened;
    },
    CLOSE_SIDEBAR: (state, withoutAnimation) => {
      Cookies.set("sidebarStatus", 1);
      state.sidebar.opened = false;
      state.sidebar.withoutAnimation = withoutAnimation;
    },
    TOGGLE_DEVICE: (state, device) => {
      state.device = device;
    },
    SET_ZONE:(state,zone) => {      
      state.zone = zone;
      Cookies.set('currentZone', zone);
    },
    TOGGLE_DEVICE_LOCATION: (state, location) => {
      state.location = location;
    }
  },
  actions: {
    ToggleSideBar: ({ commit }) => {
      commit("TOGGLE_SIDEBAR");
    },
    CloseSideBar({ commit }, { withoutAnimation }) {
      commit("CLOSE_SIDEBAR", withoutAnimation);
    },
    ToggleDevice({ commit }, device) {
      commit("TOGGLE_DEVICE", device);
    },
    SetZone({commit,state}, zone) {
      return new Promise((resolve,reject) => {
        var oldZone = Cookies.get("currentZone");
        if(oldZone) oldZone = JSON.parse(oldZone);
        if(!oldZone){
          commit('SET_ZONE', zone)
        }else if(oldZone && oldZone.id===zone.id){
          commit('SET_ZONE', zone)          
          resolve({errorCode:false});
        }else if(oldZone && oldZone.id!==zone.id){
          updateCheckedZone(zone).then(res => {
            commit('SET_ZONE', zone)
            resolve({errorCode:true});
          });
        }else{
          reject({errorCode:false});
        }
      });
    },
    ToggleDeviceLocation({ commit }, location) {
      commit("TOGGLE_DEVICE_LOCATION", location);
    }
  }
};

export default app;
